

/**
 * 仅查询单表。直接前端实现调用云数据库。
 */

// 获取组合记录
export const getRecords = async () => {
  try {
      const db = wx.cloud.database()
      const resp = db.collection('record')
        .field({
          name: true,
          descript: true
        })
        .skip(0)
        .limit(1000)
        .get()
      return resp
  } catch (error) {
    console.error("获取rubber数据失败:", error)
    throw error // 选择抛出错误。
  }
}

// 添加新的组合记录
export const addRecord = async (recordData) => {
  try {
      const db = wx.cloud.database()
      const result = await db.collection('record')
        .add({
          data: recordData
        })
      // 这里因为官方返回的格式是：所以统一格式处理下, 或者判断返回的 _id 是否正常也行。
      //       errMsg: "collection.add:ok"
      // _id: "cc84495d690f121c02b27d93233867c7"
      return {
        success: true,
        data: result,
        message: '添加成功'
      }
  } catch (error) {
    console.error("获取rubber数据失败:", error)
    throw error // 选择抛出错误。
  }
}


// 更新组合记录
export const updateRecord = async (recordId, recordData) => {
  if(!recordId || !recordData) return { success: false }

  try {
      const db = wx.cloud.database()
      delete recordData._id
      // 获取数据，验证是否成功得到对应数据。有可能获取不到。主要是模型的权限记录要正确。
      // const result2 = await db.collection('record').doc(recordId).get()
      // return {success: false, data: result2}

      const result = await db.collection('record').doc(recordId)
        .update({
          data: recordData
        });
      if(result.stats.updated > 0) {
        return {
          success: true,
          data: result,
          message: '更新成功'
        }
      } else {
        return {
          success: false,
          data: result,
          message: '失败'
        }
      }
      
  } catch (error) {
    throw error // 选择抛出错误。
  }
}

// 删除组合记录
export const deleteRecord = async (recordId) => {
  if(!recordId) return { success: false }

  try {
      const db = wx.cloud.database();
      const result = await db.collection('record').doc(recordId)
        .remove();
      return {
        success: true,
        data: result,
        message: '删除成功'
      }
  } catch (error) {
    // api 抛出错误后，被前端 catch 后，前端来显示失败。
    throw error // 选择抛出错误。
  }
}




/**
 * 调用云函数实现后段多表操作
 */

// 获取多表关联的数据。只能通过云数据库实现。
export const getRelatedRecords = async () => {
  try {
    const resp = await wx.cloud.callFunction({
      name: 'record',
      data: {
        type: 'getRelatedRecords'
      }
    })
    return resp
  } catch (error) {
    console.error("获取rubber数据失败:", error)
    throw error // 选择抛出错误。
  }
}

// 
// export const addRecord = async () => {
//   try {
//     let recordData = {
//       name: "球拍组合",
//       descript: "还不错的说明"
//     }
//     const resp = await wx.cloud.callFunction({
//       name: 'record',
//       data: {
//         type: 'addRecord',
//         recordData: recordData
//       }
//     })
//     return resp
//   } catch (error) {
//     console.error("获取blade数据失败:", error)
//     throw error // 选择抛出错误。
//   }
// }
